package com.ruoyi.market.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.market.domain.Gift;
import com.ruoyi.market.mapper.GiftMapper;
import com.ruoyi.market.service.IGiftService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.validation.Validator;
import java.util.List;

/**
 * 礼物 业务层处理
 * 
 * @author ruoyi
 */
@Service
public class GiftServiceImpl implements IGiftService
{

    @Autowired
    private GiftMapper giftMapper;

    @Autowired
    protected Validator validator;

    /**
     * 根据条件分页查询礼物列表
     * 
     * @param gift 礼物信息
     * @return 礼物信息集合信息
     */
    @Override
    public List<Gift> selectGiftList(Gift gift)
    {
        return giftMapper.selectGiftList(gift);
    }

    /**
     * 通过礼物ID查询礼物
     * 
     * @param giftId 礼物ID
     * @return 礼物对象信息
     */
    @Override
    public Gift selectGiftById(Long giftId)
    {
        return giftMapper.selectGiftById(giftId);
    }

    /**
     * 校验是否唯一
     *
     * @param gift 礼物信息
     * @return 结果
     */
    @Override
    public boolean checkGiftUnique(Gift gift)
    {
        Long giftId = StringUtils.isNull(gift.getGiftId()) ? -1L : gift.getGiftId();
        Gift info = giftMapper.checkGiftUnique(gift.getHandbookId(), gift.getShopId());
        if (StringUtils.isNotNull(info) && info.getGiftId().longValue() != giftId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 新增保存礼物信息
     * 
     * @param gift 礼物信息
     * @return 结果
     */
    @Override
    @Transactional
    public int insertGift(Gift gift)
    {
        // 新增礼物信息
        int rows = giftMapper.insertGift(gift);
        return rows;
    }

    /**
     * 修改保存礼物信息
     * 
     * @param gift 礼物信息
     * @return 结果
     */
    @Override
    @Transactional
    public int updateGift(Gift gift)
    {
        return giftMapper.updateGift(gift);
    }

    /**
     * 修改礼物状态
     * 
     * @param gift 礼物信息
     * @return 结果
     */
    @Override
    public int updateGiftStatus(Gift gift)
    {
        return giftMapper.updateGift(gift);
    }

    /**
     * 批量删除礼物信息
     * 
     * @param giftIds 需要删除的礼物ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteGiftByIds(Long[] giftIds) { return giftMapper.deleteGiftByIds(giftIds); }
}
